Non-volatile data storage devices, such as universal serial bus (USB) flash memory devices or removable storage cards, have allowed for increased portability of data and software applications. Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell. For example, multi-level cell (MLC) flash memory devices provide increased storage density by storing 2 bits per cell, 3 bits per cell, 4 bits per cell, or more. Although increasing the number of bits per cell and reducing device feature dimensions may increase the storage density of a memory device, a bit error rate of data stored at the memory device may also increase.
Error correction coding (ECC) is often used to correct errors that occur in data read from a memory device. Prior to storage, data may be encoded by an ECC encoder to generate redundant information (e.g., “parity bits”) that may be stored with the data as an ECC codeword. Conventionally, data may be encoded to generate an ECC codeword, such as a quasi-cyclic low-density parity-check (QC-LDPC) codeword.
Low-density parity-check (LDPC) codes are used in many communication and data storage systems, including flash memory. Decoding of LDPC codes may be performed using an iterative decoding process in which bits of data are adjusted in an attempt to satisfy a number of parity check equations. A syndrome weight (SW) may be used during the iterative decoding process to indicate a number of parity check equations that are unsatisfied in a particular decoding iteration of the iterative decoding process. In some cases, the SW may be used to detect convergence of the iterative decoding process (e.g., so the decoder may be deactivated or so that another decoding process of another received word may be initiated). However, because syndrome weight is typically computed at the end of each decoding iteration, use of the syndrome weight may unnecessarily introduce a delay between decoding processes in some instances (e.g., by waiting until the end of a decoding iteration to detect whether the iterative decoding process has converged).